In color images, pixel values may be represented by three or more values or channels. Such values may be interpreted according to an associated color space to display the pixel values, process them, or the like. Examples of such color spaces include the RGB (red, green, blue) color space, the YUV (Y luminance, U chroma, and V chroma) color space, the YCbCr (luminance, blue difference, and red difference) color space, and the CMYK (cyan, magenta, yellow, key or black) color space. Conversion between such color spaces may be performed via matrix multiplication, lookup tables (LUTs), or a combination thereof.
For example, in high quality image processing, color LUTs may be more commonly used for such color conversions. Such LUTs may include a sparse n-dimensional array (e.g., a 3D array) and the final color channel values may be determined based on retrieved LUT values and subsequent interpolation. For example, the input to the LUT may include three channels of 256-level (e.g., 8 bit) colors and the LUT may only be a 16×16×16 LUT such that each output color channel may be determined by looking up the closest points in the LUT (e.g., indices of a box within which the color value lies) and interpolating between them to find the conversion value. In some examples, such conversion may include tetrahedral interpolation or another form of interpolation. For example, the box or cube (in 3D) within which the color value lies may be divided into tetrahedrons and interpolation may be performed differently depending on which tetrahedron the color value is within. Such a process may be repeated for each output color channel (e.g., three times for conversion to a three channel color space or four times for conversion to a four channel color space or the like).
However, it may be advantageous to perform such color conversions more quickly and with less computational requirements. It is with respect to these and other considerations that the present improvements have been needed. Such improvements may become critical as the desire to process image data becomes more widespread.